package com.landian.commons.jpa.update;

import com.querydsl.core.types.Path;
import org.apache.commons.collections.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 更新单元容器
 *
 * @author caojl
 * @create 2017/12/14
 **/
public class UpdateUnitContainer {
    /**
     *
     */
    public static UpdateUnitContainer newInstance(){
        return new UpdateUnitContainer();
    }

    /**
     * 更新单元容器
     */
    public List<UpdateUnit> updateUnitList = new ArrayList<>();

    /**
     * 更新单元
     */
    public UpdateUnitContainer add(Path path, Object value){
        UpdateUnit updateUnit = UpdateUnit.newInstance(path, value);
        return add(updateUnit);
    }

    /**
     * 更新单元
     */
    public UpdateUnitContainer add(UpdateUnit updateUnit){
        updateUnitList.add(updateUnit);
        return this;
    }

    /**
     * 更新单元
     */
    public UpdateUnitContainer add(UpdateUnit... updateUnits){
        if(null != updateUnits){
            for (UpdateUnit updateUnit : updateUnits) {
                updateUnitList.add(updateUnit);
            }
        }
        return this;
    }

    /**
     * 更新单元
     */
    public UpdateUnitContainer add(List<UpdateUnit> updateUnits){
        if(CollectionUtils.isNotEmpty(updateUnits)){
            for(UpdateUnit updateUnit : updateUnits){
                if(null != updateUnit){
                    updateUnitList.add(updateUnit);
                }
            }
        }
        return this;
    }

    /**
     * 返回列表
     */
    public List<UpdateUnit> getList(){
        return updateUnitList;
    }
}
